package com.ithjh.aop;

import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.*;
import org.springframework.stereotype.Component;

@Component
@Aspect
public class MyAdvice {
    @Pointcut("execution(void com.ithjh.dao.BookDao.update())")
    private void pt(){}
    @Pointcut("execution(int com.ithjh.dao.BookDao.select())")
    private void pt2(){}

    //@Before("pt()")
    public void before(){
        System.out.println("before advice...");
    }

    //@After("pt()")
    public void after(){
        System.out.println("after advice...");
    }

    //@Around("pt()")
    //@Around(("pt2()"))
    public Object around(ProceedingJoinPoint pjp) throws Throwable {
        System.out.println("around before advice...");
        //对原始操作的调用
        Object ret = pjp.proceed();
        System.out.println("around after advice...");
        return ret;
    }

    //@AfterReturning("pt2()")
    public void afterReturning(){
        System.out.println("afterReturning running...");
    }

    public void afterThrowing(){
        System.out.println("afterThrowing running...");
    }
}
